def get_api_key():
    """我是函数的文档，别人调用之前可以看看我"""
    print("已经获取到了API_KEY")
    return "sk-jkldjfalsjdlfkjalskdjflka"


def get_base_url(platform="deepseek"):
    # 添加默认值的函数设计，如果没有传入platform参数，就会使用默认值
    if platform == "deepseek":
        print("已经获取到了BASE_URL，平台是deepseek")
        return "https://api.deepseek.com"
    elif platform == "openai":
        print("已经获取到了BASE_URL，平台是openai")
        return "https://api.openai.com"
    else:
        print("不支持的平台")
        return None


def ai_chat(api_key, base_url, **kwargs):
    print(f"API_KEY: {api_key}, BASE_URL: {base_url} 已完成获取")

    # 判断特别的关键字是否存在
    if "temperature" in kwargs:
        print(f"temperature: {kwargs['temperature']}")
    if "max_tokens" in kwargs:
        print(f"max_tokens: {kwargs['max_tokens']}")

    # 多行f-string，可以在{}内编写表达式
    prompts = f"""
    你是一个人工智能助手，你的任务是回答用户的问题。
    请用中文回答，不要用英文回答。
    请用{kwargs["max_tokens"] if "max_tokens" in kwargs else 300}字以内的回答回答用户的问题。
    """

    # 根据传入参数的情况来给大模型传递不同的参数
    if "temperature" in kwargs and "max_tokens" in kwargs:
        print(f"AI正在思考中...，咨询的问题是：{prompts}，调用的温度是{kwargs['temperature']}，最大生成的token是{kwargs['max_tokens']}")
    else:
        print(f"AI正在思考中...，咨询的问题是：{prompts}")

    response = "xxx"
    used_tokens = 1000
    print(f"AI返回结果：{response}，使用的token数：{used_tokens}")
    
    # 返回多个返回值 
    return response, used_tokens


api_key = get_api_key()
base_url = get_base_url()

# 使用多个变量承接来进行解包
response, used_tokens = ai_chat(api_key, base_url, temperature=0.9, max_tokens=150)
